"""
题目：一球从100米高度自由落下，每次落地后反跳回原高度的一半；再落下，求它在第10次落地时，共经过多少米？第10次反弹多高？
"""

# 自己写的


def timu_20(n):
    n_old = 100
    sum_old = 100
    i = 0
    if n == 1:
        sum_old = 100
    else:
        while i < n-1:
            i += 1
            sum_old = sum_old + n_old
            n_old = n_old/2

    print(sum_old)


# timu_20(10)

"""
n1=100
n2=n1+50*2=n1+n2=200
n3=n1+n2+25*2=n1+n2+n2=250

"""

# 腾讯元宝


def timu_20_complete(n):
    height = 100.0  # 初始高度
    total_distance = 100.0  # 总路程，初始为第一次下落高度

    if n == 1:
        rebound_height = height / 2  # 第一次落地后的反弹高度
        total_distance = height
    else:
        current_height = height
        for i in range(n - 1):  # 循环n-1次，计算从第2次到第n次落地的过程
            current_height /= 2  # 落地后反弹的高度
            total_distance += 2 * current_height  # 累加一次“反弹”和一次“下落”的距离
        rebound_height = current_height  # 循环结束后，current_height即为第n次反弹高度

    print(f"第{n}次落地时，共经过 {total_distance} 米")
    print(f"第{n}次反弹的高度为 {rebound_height} 米")


# 测试
# timu_20_complete(3)

# 文心一言
def calculate_distance_and_height(n):
    initial_height = 100
    total_distance = initial_height
    current_rebound = initial_height

    if n == 1:
        return total_distance, current_rebound / 2  # 第1次落地后反弹高度为50米

    for _ in range(1, n):  # 循环n-1次（从第2次到第n次落地）
        current_rebound /= 2      # 更新反弹高度
        total_distance += 2 * current_rebound  # 每次落地增加反弹+下落距离

    final_rebound_height = current_rebound  # 第n次落地后的反弹高度
    return total_distance, final_rebound_height


# 验证第10次落地
distance, height = calculate_distance_and_height(3)
print(f"第10次落地总距离：{distance:.6f}米")
print(f"第10次反弹高度：{height:.6f}米")
